package com.ruoyi.produce.base.mrp.service;

import com.ruoyi.produce.base.bom.domain.Bom;
import com.ruoyi.produce.base.mrp.domain.MRP;
import com.ruoyi.produce.process.planself.domain.ProducePlanSelfCond;
import com.ruoyi.produce.process.planself.domain.ProducePlanSelfDto;
import com.ruoyi.psi.sale.order.domain.SaleOrderCond;
import com.ruoyi.psi.sale.order.domain.SaleOrderListDto;

import java.util.List;

/**
 * MRP运算
 * 业务层
 * @author Drj 2021/6/28
 */
public interface IMRPService {
    /**
     * 通过MRP获取生产计划
     * @return
     */
    public List<ProducePlanSelfDto> selectProducePlanSelf(ProducePlanSelfCond cond);

    /**
     * 生产计划通过MRP生成产品毛需求
     * @param producePlanSelf
     * @return
     */
    public Bom selectDemandListByProducePlanSelf(ProducePlanSelfDto producePlanSelf);

    /**
     * 通过MRP获取销售订单
     * @param cond
     * @return
     */
    public List<SaleOrderListDto> selectSaleOrderList(SaleOrderCond cond);

    /**
     * 销售产品通过MRP生成产品毛需求
     * @param saleOrderList
     * @return
     */
    public Bom selectDemandListBySaleOrderList(SaleOrderListDto saleOrderList);

    /**
     * 毛需求通过MRP生成产品自产计划建议，产品采购建议
     * @param bom
     * @return
     */
    public List<MRP> getAdviseByDemandList(Bom bom);

    /**
     * 根据自产计划建议，生成生产计划
     * @param mrps
     * @return
     */
    public int releaseProducePlanSelf(List<MRP> mrps);

    /**
     * 根据采购建议，生成采购订单
     * @param mrps
     * @return
     */
    public int releasePurchaseApply(List<MRP> mrps);

    /**
     * 更新毛需求表
     * @param bom
     * @return
     */
    int updateDemandList(Bom bom);
}
